package movilmax.sia_corp.action;

import java.util.HashMap;
import java.util.Map;

import movilmax.sia_corp.model.Usuario;
import movilmax.sia_corp.model.SucursalC;

import apli.conectar.Conectar;
import basedatos.Fecha;
import basedatos.Resultado;
import utilidades.Cadena;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class Sucursales  extends ActionSupport  {
	private static final long serialVersionUID = -5250090833065413235L;

	private Map<String, SucursalC> lst_sucursales;
	private String cod_prospecto;
	private SucursalC sucursal;
	private Conectar BASE;
	
	public void validate(){	
		try{
			if ( this.getCod_prospecto().length() == 0 ){	
				this.addActionError("Debe cargar el prospecto" );
				return;
			}
			if ( this.getSucursal().getTel1().length() <3  ){	
				this.addActionError( "Debe indicar el numero de telefono 1" );
				return;
			}
			
			if ( this.getSucursal().getCod_mun().equals("-1")  ){	
				this.addActionError( "Debe seleccionar el municipio" );
				return;
			}
			if ( this.getSucursal().getCiudad().length() < 3  ){	
				this.addActionError( "Debe indicar la ciudad" );
				return;
			}
			if ( this.getSucursal().getZona().length() < 4  ){	
				this.addActionError( "Debe indicar la zona con 4 caracteres como minimo" );
				return;
			}
			if ( this.getSucursal().getAvcalle().length() < 8  ){	
				this.addActionError( "Debe indicar av / calle / urbanizacion con 8 caracteres como minimo" );
				return;
			}
			if ( this.getSucursal().getTp_inmueble().equals("Seleccione")  ){	
				this.addActionError( "Debe indicar el tipo de inmueble" );
				return;
			}
		}catch(Exception err){
			//this.addActionError( "Error" );	
		}
	} 
	
	@SuppressWarnings("rawtypes")
	public String guardar(){
		  Map session = ActionContext.getContext().getSession();
		    Usuario USUARIO = (Usuario)session.get("ses_usuario");
		    if (USUARIO!=null){	
		    	BASE= new Conectar();
		    	if(BASE.getMsg().equals("SI")){
		    		String SQL="",cod=this.getSucursal().getCod();
		    		Fecha F=new Fecha();
	    			String FECHA=F.getFecha();
	    			String HORA=F.getHoras();
		    		if(cod.equals("NRG") ){
		    				System.out.println("Codigo Prospecto: "+this.getCod_prospecto());
		    				
		    	    		cod=BASE.getBaseDatos().generarCodigo("corp_sucursales","cod");
  		    	    		SQL="INSERT INTO corp_sucursales " +
  	  		    			"(cod,prospecto,telefono,telefono_oficina,celular,zona,ciudad,municipio,avcalle,tipoinmueble,des_inmuemble,nro_inmueble,piso_inmueble,descripcion,usuario_registro,fecha_registro,hora_registro) "+
  	  		    			"VALUES('"+cod+"','"+ this.getCod_prospecto() +"','"+this.getSucursal().getTel1()+"','"+ this.getSucursal().getTel2()+"','"+ this.getSucursal().getTel3() +"','"+ this.getSucursal().getZona().toUpperCase() +"','"+ this.getSucursal().getCiudad().toUpperCase() +"','"+ this.getSucursal().getCod_mun() +"','"+ this.getSucursal().getAvcalle().toUpperCase() +"','"+ this.getSucursal().getTp_inmueble() +"','"+ this.getSucursal().getDes_inmueble().toUpperCase() +"','"+ this.getSucursal().getNro() +"','"+ this.getSucursal().getPiso() +"','"+ this.getSucursal().getDes().toUpperCase() +"','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"' )";
  	  		    	        boolean rp=BASE.getBaseDatos().ejecutar(SQL);
  	  		    	        if(rp){
  	  		    	            this.addActionMessage(this.getSucursal().getDes()+  " CREADA");
  	  		    	           SQL="INSERT INTO corp_seguimiento_actividades " +
	    	            		"(prospecto,actividad,detalle,obs,usuario,fecha,hora,stx) "+
	    	            		"VALUES('"+this.getCod_prospecto()+"','9','9993','INSERTO','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"','HECHO' )";
	    	            		BASE.getBaseDatos().ejecutar(SQL);
	    	            		BASE.getBaseDatos().cerrarConexion();
  	  		    	            return SUCCESS;
  	  		    	        }else{
  	  		    	            this.addActionError("NO SE PUDO CREAR");
  	  		    	        }   
	    	    	}else{
	    	    		SQL="UPDATE corp_sucursales SET " +
	  		    			"telefono='"+this.getSucursal().getTel1()+"',telefono_oficina='"+ this.getSucursal().getTel2()+"',celular='"+ this.getSucursal().getTel3() +"',zona='"+ this.getSucursal().getZona().toUpperCase() +"',ciudad='"+ this.getSucursal().getCiudad().toUpperCase() +"',municipio='"+ this.getSucursal().getCod_mun() +"',avcalle='"+ this.getSucursal().getAvcalle().toUpperCase() +"',tipoinmueble='"+ this.getSucursal().getTp_inmueble() +"',des_inmuemble='"+ this.getSucursal().getDes_inmueble().toUpperCase() +"',nro_inmueble='"+ this.getSucursal().getNro() +"' ,piso_inmueble='"+ this.getSucursal().getPiso() +"'  "+
	  		    			" Where cod='"+cod+"' ";
	  		    	        boolean rp= BASE.getBaseDatos().ejecutar(SQL);
	  		    	        if(rp){
  	  		    	            this.addActionMessage(this.getSucursal().getDes()+  " ACTUALIZADA");
  	  		    	           SQL="INSERT INTO corp_seguimiento_actividades " +
	    	            		"(prospecto,actividad,detalle,obs,usuario,fecha,hora,stx) "+
	    	            		"VALUES('"+this.getCod_prospecto()+"','9','9993','ACTUALIZO','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"','HECHO' )";
	    	            		BASE.getBaseDatos().ejecutar(SQL);
	    	            		BASE.getBaseDatos().cerrarConexion();
  	  		    	            return SUCCESS;
	  		    	        }else{
  	  		    	            this.addActionError("NO SE PUDO ACTUALIZAR");
  	  		    	        } 
	    	    	}
		    		BASE.getBaseDatos().cerrarConexion();
		    	}else{
	    	         this.addActionError("No hay conexion al servidor");
		    	} 
		    }else{
   	             this.addActionError("La sesion del usuario ha caducado");
    	    } 
		    return ERROR;  
	}	    
	
	@SuppressWarnings("rawtypes")
	public String listar(){
		
		System.out.println("Centinela: Sucursales: Listar");
		
		  lst_sucursales=new HashMap<String, SucursalC>();
		  Map session = ActionContext.getContext().getSession();
		    Usuario USUARIO = (Usuario)session.get("ses_usuario");
		    int i=0;  
		    if (USUARIO!=null)
		    {	
		    	BASE= new Conectar();
		    	if(BASE.getMsg().equals("SI"))
		    	{	
		    		String SQL="Select X.cod,UPPER(X.descripcion) AS descripcion,E.cod as cod_est,C.cod as cod_mun,E.estado,C.municipio,X.ciudad,X.zona,X.avcalle,X.tipoinmueble,X.des_inmuemble,X.piso_inmueble,X.nro_inmueble,X.telefono,X.telefono_oficina,X.celular,X.fax  "+
		    	      "From corp_sucursales X ,municipios C,estados E "+
		    	      "where X.prospecto='"+  this.getCod_prospecto() + "' and X.municipio=C.cod and C.estado=E.cod Order by X.cod ASC "; 	
		    	    
		    		Resultado RCS=BASE.getBaseDatos().consultar(SQL);
		    		if(RCS.RP){
		    		   do{
		    			   SucursalC ITM=new SucursalC();
		    			   ITM.setCod(RCS.getCadena("cod"));
		    			   ITM.setDes(RCS.getCadena("descripcion"));
		    			   if(RCS.getCadena("ciudad").trim().equals("") )
		    				   ITM.setCiudad("-");
		    			   else
		    				   ITM.setCiudad(RCS.getCadena("ciudad"));
		    			   
		    			   
		    			   if(RCS.getCadena("zona").trim().equals("") )
		    				   ITM.setZona("-");
		    			   else
		    				   ITM.setZona(RCS.getCadena("zona"));
		    			   
		    			  // Debug.println("ZONA",RCS.getCadena("avcalle"));
		    			   if(RCS.getCadena("avcalle").trim().equals(""))
		    				   ITM.setAvcalle("-");
		    			   else
		    			       ITM.setAvcalle(RCS.getCadena("avcalle"));
		    			   
		    			   ITM.setTp_inmueble(RCS.getCadena("tipoinmueble"));
		    			   
		    			   if(RCS.getCadena("des_inmuemble").trim().equals(""))
		    				   ITM.setDes_inmueble("-");
		    			   else
		    				   ITM.setDes_inmueble(RCS.getCadena("des_inmuemble"));
		    			   
		    			   if(RCS.getCadena("piso_inmueble").trim().equals(""))
		    				   ITM.setPiso("-");
		    			   else
		    				   ITM.setPiso(RCS.getCadena("piso_inmueble"));
		    			   
		    			   if(RCS.getCadena("nro_inmueble").trim().equals(""))
		    				   ITM.setNro("-");
		    			   else
		    				   ITM.setNro(RCS.getCadena("nro_inmueble"));
		    			   
		    			   if(RCS.getCadena("telefono").trim().equals(""))
		    				   ITM.setTel1("-");
		    			   else
		    				   ITM.setTel1(RCS.getCadena("telefono"));
		    			   
		    			   if(RCS.getCadena("telefono_oficina").trim().equals(""))
		    				   ITM.setTel2("-");
		    			   else
		    				   ITM.setTel2(RCS.getCadena("telefono_oficina"));
		    			   
		    			   if(RCS.getCadena("celular").trim().equals(""))
		    				   ITM.setTel3("-");
		    			   else
		    				   ITM.setTel3(RCS.getCadena("celular"));
		    			   
		    			   ITM.setCod_estado(RCS.getCadena("cod_est"));
		    			   ITM.setCod_mun(RCS.getCadena("cod_mun"));
		    			   ITM.setDes_estado(RCS.getCadena("estado"));
		    			   ITM.setDes_mun(RCS.getCadena("municipio"));
		    			   
		    			   lst_sucursales.put("dv_"+new Cadena().convertirStr(i),ITM);
		    			   i++;
		    		   }while(RCS.sigItem());
		    		}
		    		BASE.getBaseDatos().cerrarConexion();
		    	}
		    	agregarSucursal(new Cadena().convertirStr(i));	
		    }
		  return SUCCESS;
	}
	private void agregarSucursal(String id){
		SucursalC ITM=new SucursalC();
		   ITM.setCod("NRG");
		   if(id.equals("0"))
			   ITM.setDes("Sede principal");
		   else
			   ITM.setDes("Sucursal ("+id+" )");  
		   ITM.setCiudad("-");
		   ITM.setZona("-");
		   ITM.setAvcalle("-");
		   ITM.setTp_inmueble("Seleccione");
		   ITM.setDes_inmueble("-");
		   ITM.setPiso("-");
		   ITM.setNro("-");
		   ITM.setTel1("-");
		   ITM.setTel2("-");
		   ITM.setTel3("-");
		   ITM.setCod_estado("-1");
		   ITM.setCod_mun("-1");
		   ITM.setDes_estado("Seleccione");
		   ITM.setDes_mun("Seleccione");
		   lst_sucursales.put("dv_"+id,ITM);
	}
	@SuppressWarnings("rawtypes")
	public String mostrar(){
		 Map session = ActionContext.getContext().getSession();
		 session.remove("ses_tabla_ss");
		 session.remove("ses_tabla_cc");
		return SUCCESS;
	}
	public String getCod_prospecto() {
		return cod_prospecto;
	}
	public void setCod_prospecto(String cod_prospecto) {
		this.cod_prospecto = cod_prospecto;
	}
	
	public SucursalC getSucursal() {
		return sucursal;
	}
	public void setSucursal(SucursalC sucursal) {
		this.sucursal = sucursal;
	}

	public Map<String, SucursalC> getLst_sucursales() {
		return lst_sucursales;
	}

	public void setLst_sucursales(Map<String, SucursalC> lst_sucursales) {
		this.lst_sucursales = lst_sucursales;
	}
	
	
	
}
